home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HPAVC
/
HPAVC CD-ROM.iso
/
ASMVEG4.ZIP
/
CC.ASM
< prev
next >
Wrap
Assembly Source File
|
1996-12-23
|
4KB
|
136 lines
BEGIN: JMP INITIALIZE
HOURS DB 0
MINUTES DB 0
SECONDS DB 0
OLD_INT_28 DW 0
OLD_INT_28_2 DW 0
VID_SEG DW 0B800
POINTER DB 0
SCR_BUFFER DB '00:00:00 pm'
SCR_LEN DW $-OFFSET SCR_BUFFER
BUSY DB 0
GET_TIME: PUSH AX,BX,CX,DX,SI,DI,DS,ES
PUSHF
CLD
PUSH CS
POP DS
PUSH CS
POP ES
CMP BUSY,1
JNZ PASS_BUSY
JMP QUICK_EXIT
PASS_BUSY: MOV BUSY,1
MOV AH,02C
INT 021
MOV HOURS,CH
MOV MINUTES,CL
MOV SECONDS,DH
MOV DI,OFFSET SCR_BUFFER
OPT_TIME: MOV DL,HOURS
CMP DL,13
JL NOT_PM
SUB DL,12
MOV POINTER,1
NOT_PM: CMP DL,0
JNZ NOT_ZERO_TIME
MOV DL,12
MOV POINTER,1
NOT_ZERO_TIME: XOR DH,DH
CMP DL,10
JGE NOT_PAST10
MOV AL,' '
STOSB
NOT_PAST10: CALL WRITE_DECIMAL
MOV AL,':'
STOSB
MOV DL,MINUTES
XOR DH,DH
CMP DL,10
JGE NOT_10_3
MOV AL,'0'
STOSB
NOT_10_3: CALL WRITE_DECIMAL
MOV AL,':'
STOSB
MOV DL,SECONDS
XOR DH,DH
CMP DL,10
JGE NOT_10_4
MOV AL,'0'
STOSB
NOT_10_4: CALL WRITE_DECIMAL
MOV AL,' '
STOSB
MOV AL,'a'
CMP POINTER,1
JNZ NOT_PTR_1
MOV AL,'p'
NOT_PTR_1: STOSB
MOV AX,VID_SEG
MOV ES,AX ; sets up base to write to
MOV DI,3978 ; sets up offset to write to
MOV SI,OFFSET SCR_BUFFER ; sets up location to write from
MOV CX,SCR_LEN ; counter for number of bytes to write (length of scr_buffer)
OPT_TIME_SCREEN: MOVSB
MOV AL,0F
STOSB
LOOP OPT_TIME_SCREEN
MOV BUSY,0
QUICK_EXIT: POPF
POP ES,DS,DI,SI,DX,CX,BX,AX
IRET
WRITE_DECIMAL: PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AX,DX
MOV BX,10
XOR CX,CX
NEXT_COUNT: XOR DX,DX
DIV BX
PUSH DX
INC CX
OR AX,AX
JNZ NEXT_COUNT
FLOG_IT_BACK: POP AX
ADD AL,'0'
STOSB
LOOP FLOG_IT_BACK
POP DX
POP CX
POP BX
POP AX
RET
INITIALIZE: MOV AH,0F
INT 010
CMP AL,07
JNZ NOT_MONO
MOV VID_SEG,0B000
NOT_MONO: MOV AX,03528
INT 021
MOV OLD_INT_28,BX
MOV OLD_INT_28_2,ES
MOV AX,02528
MOV DX,OFFSET GET_TIME
INT 021
MOV DX,OFFSET INITIALIZE
INT 027